package com.jgzj.example.export.service.impl;

import com.jgzj.example.export.config.Export;
import com.jgzj.example.export.format.UserInfoFormat;
import com.jgzj.example.export.model.UserInfoExportModel;
import com.jgzj.example.export.service.UserInfoService;
import com.jgzj.example.export.vo.BaseReqVo;
import com.jgzj.example.export.vo.UserInfoRspVo;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @description:
 * @author: 子木
 * @since: 2021/05/16
 */
@Service
public class UserInfoServiceImpl implements UserInfoService {

    private static List<UserInfoRspVo> userInfoVos = new ArrayList<>();

    static {
        final UserInfoRspVo item1 = UserInfoRspVo.builder().age(19).name("子木")
                .password("1234560").createAt(new Date())
                .updateAt(new Date()).uid(1999L).build();
        userInfoVos.add(item1);
        final UserInfoRspVo item2 = UserInfoRspVo.builder().age(18).name("Guide哥")
                .password("1234561").createAt(new Date())
                .updateAt(new Date()).uid(2000L).build();
        userInfoVos.add(item2);
        final UserInfoRspVo item3 = UserInfoRspVo.builder().age(20).name("水煮鱼")
                .password("1234562").createAt(new Date())
                .updateAt(new Date()).uid(2001L).build();
        userInfoVos.add(item3);
        final UserInfoRspVo item4 = UserInfoRspVo.builder().age(21).name("西红柿")
                .password("1234563").createAt(new Date())
                .updateAt(new Date()).uid(2002L).build();
        userInfoVos.add(item4);
        final UserInfoRspVo item5 = UserInfoRspVo.builder().age(22).name("人间不值得")
                .password("1234564").createAt(new Date())
                .updateAt(new Date()).uid(2003L).build();
        userInfoVos.add(item5);
        final UserInfoRspVo item6 = UserInfoRspVo.builder().age(23).name("白水")
                .password("1234565").createAt(new Date())
                .updateAt(new Date()).uid(2004L).build();
        userInfoVos.add(item6);
        final UserInfoRspVo item7 = UserInfoRspVo.builder().age(23).name("尘心无痕")
                .password("1234566").createAt(new Date())
                .updateAt(new Date()).uid(2005L).build();
        userInfoVos.add(item7);
    }

    @Override
    @Export(value = "userInfo", model = UserInfoExportModel.class, exportFormat = UserInfoFormat.class)
    public List<UserInfoRspVo> getList(BaseReqVo baseReqVo) {
        if (baseReqVo.getPageSize()>userInfoVos.size()) {
            return userInfoVos;
        }
        if (baseReqVo.getPageNo() > 1) {
            return userInfoVos.subList(5, userInfoVos.size());
        }
        return userInfoVos.subList(0, 5);
    }
}